// dataSync.ts - 数据同步管理工具
import { getCurrentUser, getUserId } from './userStore';

// 社区帖子类型定义
interface CommunityPost {
  avatar: string;
  name: string;
  date: string;
  sportType: string;
  distance: string;
  time: string;
  calorie: string;
  images: string[];
  mediaTypes?: string[];
  descTitle: string;
  desc: string;
  like: number;
  comment: number;
  id?: string;
}

// 笔记类型定义
interface NoteItem {
  id: string;
  userId: string;
  date: string;
  activity: string;
  stats: Array<{
    label: string;
    value: string;
  }>;
  content: string;
  likes: number;
  images?: string[];
  mediaTypes?: ('image' | 'video')[];
}

// 添加社区帖子
export function addCommunityPost(post: Omit<CommunityPost, 'id'>): CommunityPost {
  try {
    // 生成唯一ID
    const id = `post_${Date.now()}_${Math.random().toString(36).substring(2, 9)}`;
    
    // 创建包含ID的完整帖子
    const newPost: CommunityPost = {
      ...post,
      id
    };
    
    // 同步到笔记（实际项目中可能需要调用API）
    syncToNotes(newPost);
    
    console.log('帖子已添加并同步到笔记:', newPost);
    return newPost;
  } catch (error) {
    console.error('添加帖子失败:', error);
    // 返回带有错误标记的帖子
    return {
      ...post,
      id: `error_${Date.now()}`,
      desc: post.desc + ' (同步失败)'
    };
  }
}

// 同步帖子到笔记
function syncToNotes(post: CommunityPost): void {
  try {
    // 获取现有笔记
    const notesStr = localStorage.getItem('userNotes') || '[]';
    const notes = JSON.parse(notesStr);
    
    // 创建笔记条目
    const noteEntry = {
      id: post.id,
      userId: getUserId(),
      date: post.date,
      activity: post.sportType,
      stats: [
        { label: '运动距离', value: post.distance },
        { label: '运动时间', value: post.time },
        { label: '运动消耗', value: post.calorie }
      ],
      content: post.desc,
      likes: post.like,
      images: post.images,
      mediaTypes: post.mediaTypes
    };
    
    // 添加到笔记列表开头
    notes.unshift(noteEntry);
    
    // 保存回localStorage
    localStorage.setItem('userNotes', JSON.stringify(notes));
    
    console.log('已同步到笔记:', noteEntry);
  } catch (error) {
    console.error('同步到笔记失败:', error);
  }
}

// 从本地存储加载数据
export function loadAllData() {
  try {
    console.log('加载所有数据');
    // 这里可以添加其他数据加载逻辑
  } catch (error) {
    console.error('加载数据失败:', error);
  }
}

// 获取当前用户的笔记
export function getUserNotes(): NoteItem[] {
  try {
    const userId = getUserId();
    const notesStr = localStorage.getItem('userNotes') || '[]';
    const allNotes = JSON.parse(notesStr);
    
    // 过滤出当前用户的笔记
    const userNotes = allNotes.filter((note: NoteItem) => note.userId === userId);
    console.log(`获取用户(${userId})的笔记:`, userNotes.length, '条');
    return userNotes;
  } catch (error) {
    console.error('获取用户笔记失败:', error);
    return [];
  }
}